package com.taiji.dianthus.service.sys;


import com.alibaba.fastjson.JSONArray;
import com.mysql.cj.xdevapi.JsonArray;
import com.taiji.dianthus.common.BusinessMessage;
import com.taiji.dianthus.domain.sys.DSysOrg;

import java.util.List;

/**
 * @ClassName PushOrgService
 * @Description
 * @Author H.M
 * @Date 2020/1/7
 */
public interface OrgService {

    /**
     * 查询组织列表
     *
     * @param currentPage
     * @param PageSize
     * @return
     */
    BusinessMessage list(Integer currentPage, Integer PageSize);

    /**
     * 根据ID获取
     *
     * @param id
     * @return
     */
    DSysOrg getOrgById(String id);

    /**
     * 保存方法
     *
     * @param pushOrg
     * @return
     */
    BusinessMessage save(DSysOrg pushOrg);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    BusinessMessage delete(String id);


    /**
     * 获取名称
     *
     * @param id
     * @return
     */
    String getOrgNameById(String id);

    /**
     * 查询所有列表
     *
     * @return
     */
    List<DSysOrg> listAll();

    /**
     * 根据id数组查询集合
     *
     * @param ids
     * @return
     */
    List<DSysOrg> listByIds(String[] ids);

    /**
     * 查询所有除参数外列表
     *
     * @param orgId
     * @return
     */
    List<DSysOrg> listAllExclusionId(String orgId);

    /**
     * 根据ID集合查询
     *
     * @param ids
     * @return
     */
    List<DSysOrg> listByIds(List<String> ids);

    /**
     * 获取组织树的json数据
     *
     * @return
     */
    JSONArray getAllOrgTree();

    /**
     * 查询所有在用组织
     *
     * @return
     */
    Integer countOrg();

    JSONArray getOrgUserTree();

    DSysOrg getOrgByPushId(String orgId);

    Integer getOrgByOrgName(String orgName,String parentId);

    List<DSysOrg> getZijiOrg(String id);

    Integer getOrgOrgNameByParentNull(String orgName);

    Integer editOrgByOrgName(String orgName, String parentId, String editId);

    Integer editOrgOrgNameByParentNull(String orgName, String editId);

    List<BusinessMessage> addSynBaseOrg(String jsonArrayStr);

    List<BusinessMessage> updateSynBaseOrg(String jsonArrayStr);

    List<BusinessMessage> deleteSynBaseOrg(String jsonArrayStr);
}
